package com.victor.utils;

import java.util.List;

import org.apache.poi.ss.formula.functions.T;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class GetPage<T> {

	/**
	 * 总条数
	 */
	private Integer total;

	/**
	 * 总页数
	 */
	private Integer size;

	/**
	 * 当前页
	 */
	private Integer page;

	/**
	 * 容量
	 */
	private Integer row;

	/**
	 * 数据
	 */
	private List<T> list;

	// 分页
	public static <T> List<T> getAllPage(int pageNo, int pageSize, List<T> list) {
		// 总记录数
		int total = list.size();
		// 开始索引
		int fromIndex = (pageNo - 1) * pageSize;
		// 结束索引
		int toIndex = fromIndex + pageSize;
		// 如果结束索引大于集合的最大索引，那么规定结束索引=集合大小
		if (toIndex > total) {
			toIndex = total;
		}
		List<T> subList = null;
		if (fromIndex <= total) {
			subList = list.subList(fromIndex, toIndex);

		}

		return subList;
	}

	public static <T> GetPage<T> pageInfo(int pageNo, int pageSize, List<T> list) {
		if (pageNo < 1) {
			pageNo = 1;
		}
		// 总记录数
		int total = list.size();
		// 总页数
		int size = total / pageSize;
		if (size % pageSize != 0) {
			size++;
		}
		// 开始索引
		int fromIndex = (pageNo - 1) * pageSize;
		// 结束索引
		int toIndex = fromIndex + pageSize;
		// 如果结束索引大于集合的最大索引，那么规定结束索引=集合大小
		if (toIndex > total) {
			toIndex = total;
		}
		List<T> subList = null;
		if (fromIndex <= total) {
			subList = list.subList(fromIndex, toIndex);

		}
		GetPage<T> result = new GetPage<>();
		result.setList(subList);
		result.setPage(pageNo);
		result.setRow(pageSize);
		result.setSize(size);
		result.setTotal(total);

		return result;
	}
}
